home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_07 / allison / destroy5.cpp < prev    next >
C/C++ Source or Header  |  1994-05-02  |  699b  |  48 lines

  1. LISTING 9 - Illustrates the Principle of "Resource Allocation is
  2. Initialization"
  3.  
  4. // destroy5.cpp
  5. #include <stdio.h>
  6.  
  7. void f(char *fname);
  8.  
  9. main()
  10. {
  11.     try
  12.     {
  13.         f("file1.dat");
  14.     }
  15.     catch(...)
  16.     {
  17.         puts("Exception caught in main()");
  18.     }
  19.     return 0;
  20. }
  21.  
  22. void f(char *fname)
  23. {
  24.     class File
  25.     {
  26.         FILE *f;
  27.     public:
  28.         File(const char* fname, const char* mode)
  29.         {
  30.             f = fopen(fname, mode);
  31.         }
  32.         ~File()
  33.         {
  34.             fclose(f);
  35.             puts("File closed");
  36.         }
  37.     };
  38.  
  39.     File x(fname,"r");
  40.     throw 1;
  41. }
  42.  
  43. /* Output:
  44. File closed
  45. Exception caught in main()
  46. */
  47.  
  48.